﻿Imports System.Data
Imports System.ComponentModel
Imports System.Collections.ObjectModel





Class GOMEliminarTripleCaptura

Private lstOrdenesMarketListed As  List(Of CTOrdenMarketListed)
Private lstLogTransacListed    As  List(Of CTLogTransacciones )
Private negocio                As CSOrdMarketListed 





Private Const __NUM_MAX_REG__  As Integer = 1000
Private Const __NUM_COL_TOT__  As Integer = 9







    Public Sub New()
              
        InitializeComponent()
    
        lstOrdenesMarketListed = New List(Of CTOrdenMarketListed)
        lstLogTransacListed    = New List(Of CTLogTransacciones )

        negocio        = New  CSOrdMarketListed ()        

        grdLayoutOrdMarketListed.ItemsSource = lstOrdenesMarketListed  
        grdLayoutOrdMarketListed.Items.Refresh  ()

          InicializarFechaHora ()

         txtNumReg.Content = 0 

        Mouse.OverrideCursor = Nothing
                                
    End Sub


#Region "EVENTOS"



#Region "Botones"

       
    Private Sub btnAgregarOrdenMarketListed_Click(ByVal sender As System.Object , ByVal e As System.Windows.RoutedEventArgs) Handles btnAgregarOrdenMarketListed.Click                  

       Try
          AgregarRegistroInstrumento(1)                    
          txtNumReg.Content = lstOrdenesMarketListed.Count 
       Catch ex As Exception
          MessageBox.Show ("Error al intentar agregar un nuevo registro: " & ex.Message,"Agregar registros",MessageBoxButton.OK,MessageBoxImage.Exclamation)
       End Try
        
    End Sub
    
    Private Sub btnEliminarOrdenMarketListed_Click(ByVal sender As System.Object , ByVal e As System.Windows.RoutedEventArgs) Handles btnEliminarOrdenMarketListed.Click
        
        Dim lstRegEliminar  = new List(Of CTOrdenMarketListed)

        If grdLayoutOrdMarketListed.SelectedCells.Count > 0 Then
            
            For Each celda As DataGridCellInfo In grdLayoutOrdMarketListed.SelectedCells
                    lstRegEliminar.Add ( CType (celda.Item, CTOrdenMarketListed))                
            Next
            
            For Each T As CTOrdenMarketListed   In lstRegEliminar 
                lstOrdenesMarketListed.Remove(T)
            Next

            grdLayoutOrdMarketListed.Items.Refresh ()  
        
        End If 

        txtNumReg.Content = lstOrdenesMarketListed.Count 

    End Sub     

    Private Sub btnImportarExcel_Click(ByVal sender As System.Object , ByVal e As System.Windows.RoutedEventArgs) Handles btnImportarExcel.Click
   

   
    Dim aplicacion    As Microsoft.Office.Interop.Excel._Application
    Dim libro         As Microsoft.Office.Interop.Excel.Workbook
    Dim hoja          As Microsoft.Office.Interop.Excel.Worksheet
    Dim rango         As Microsoft.Office.Interop.Excel .Range
    Dim NumReg        As Integer



    Dim resultadoDialog As Boolean
    Dim sRutaArchivo    As String  = ""
    Dim dialog = new Microsoft.Win32.OpenFileDialog()
    

    Dim eventoBit =  CBitacoraFRIDA.GenerarEvento (CBitacoraFRIDA.CveEventosBit.CARGAR_ARCHIVO_TRANS_LISTED,CServiciosMacrosSyBaseDB.IDUSUARIO,"GOMEliminarTripleCaptura.xaml.vb->btnImportarExcel_Click")    



    '1) Seleccionar la ruta del archivo 
    dialog.FileName = ""
    dialog.DefaultExt= "xls"
    dialog.Filter = "Excel documents|*.xls;*.xlsx"
    dialog.Multiselect =False 

    resultadoDialog = dialog.ShowDialog()
    
    If resultadoDialog = True then 
      sRutaArchivo = dialog.FileName
    Else 
       eventoBit.GuadarDetalle ("Selección_archivo","No se pudo obtener la ruta del archivo") 
       eventoBit.ActualizarFechaFinDelEvento ()
       MessageBox.Show("No se pudo obtener la ruta del archivo","Carga información de transacciones Listed",MessageBoxButton.OK,MessageBoxImage.Exclamation)       
       Exit sub
    End If


    '2) Se crea una instancia de Excel
    Try
        aplicacion = CreateObject("Excel.Application")        
    Catch ex As Exception
       Dim errorBit = eventoBit.GuardarError (ex.Message)
       eventoBit.ActualizarFechaFinDelEvento ()        
       MessageBox.Show("No se pudo leer el archivo, error al crear la instancia de Excel: " & errorBit.IdError & "-" & errorBit.IdRegEvento ,"Carga de comisiones",MessageBoxButton.OK,MessageBoxImage.Exclamation)
       Exit Sub 
    End Try
     

    '3) se abre el libro y la hoja
     Try
         libro = Aplicacion.Workbooks.Open(sRutaArchivo)
         hoja = libro.Sheets(1)

     Catch ex As Exception     
         Dim errorBit = eventoBit.GuardarError (ex.Message)
         eventoBit.ActualizarFechaFinDelEvento ()
         MessageBox.Show("No se pudo leer el archivo, error al abrir el libro Excel: " & errorBit.IdError  & "-" & errorBit.IdRegEvento , "Carga archivo", MessageBoxButton.OK, MessageBoxImage.Error)
         aplicacion.Quit()
         ReleaseObject(aplicacion)
         GC.Collect()
        Exit Sub
     End Try



     '4) Obtener datos


     rango = hoja.UsedRange
     NumReg  = rango.Rows.Count
   

    If NumReg <= 0 then 
       eventoBit.GuadarDetalle ("Obtener_datos_de_archivo_Excel","Archivo vacio") 
       eventoBit.ActualizarFechaFinDelEvento ()
       MessageBox.Show("Archivo vacio", "Carga archivo", MessageBoxButton.OK, MessageBoxImage.Error)
       ReleaseObject(hoja)
       libro.Close(False, Type.Missing, Type.Missing)
       ReleaseObject(libro)
       aplicacion.Quit()
       ReleaseObject(aplicacion)
       GC.Collect()
       Exit sub
    End If


   
   Try       

      For i = 2 to NumReg 

           Dim OML = New CTOrdenMarketListed ()
           
            OML.Portafolio    = hoja.Cells(i,1).Value2
            OML.Instrumento   = hoja.Cells(i,2).Value2 
            OML.Precio        = hoja.Cells(i,3).Value2
            OML.CantidadTit   = hoja.Cells(i,4).Value2 
            OML.TipoTran      = hoja.Cells(i,5).Value2
            OML.Strategia     = hoja.Cells(i,6).Value2
            
            If OML.Strategia is Nothing then 
               OML.Strategia = ""
            End If

            Dim dfecTran As Date = hoja.Cells(i,7).Value
            Dim dfecSetl As Date = hoja.Cells(i,8).Value
            
            OML.FecTran       = dfecTran.ToString ("dd-MM-yyyy")  
            OML.FecLiq        = dfecSetl.ToString ("dd-MM-yyyy")  
            
            OML.Broker        = hoja.Cells(i,9).Value2
           


           If Not (OML.Portafolio Is Nothing or OML.Instrumento is Nothing) then 
              lstOrdenesMarketListed.Add (OML) 
           End If
            
      Next       


   Catch ex As Exception
      Dim errorBit = eventoBit.GuardarError (ex.Message) 
      MessageBox.Show("Error al cargar la información, en la lectura de registros:" & errorBit.IdError & "-" & errorBit.IdRegEvento, "Carga archivo", MessageBoxButton.OK, MessageBoxImage.Error)
   Finally
     
     grdLayoutOrdMarketListed.Items.Refresh ()  

     ReleaseObject(hoja)
     libro.Close(False, Type.Missing, Type.Missing)
     ReleaseObject(libro)
     aplicacion.Quit()
     ReleaseObject(aplicacion)
     GC.Collect()

   End Try


   eventoBit.ActualizarFechaFinDelEvento ()
   txtNumReg.Content = lstOrdenesMarketListed.Count 

End Sub

    Private Sub btnPegarInfo_Click(ByVal sender As System.Object , ByVal e As System.Windows.RoutedEventArgs) Handles btnPegarInfo.Click        
            
            Mouse.OverrideCursor = Cursors.Wait  
    
            Dim eventoBit =  CBitacoraFRIDA.GenerarEvento (CBitacoraFRIDA.CveEventosBit.PEGAR_TRAN_LISTED_PORTAPAPELES,CServiciosMacrosSyBaseDB.IDUSUARIO,"GOMEliminarTripleCaptura.xaml.vb->btnPegarInfo_Click")    

            Try
            
                If lstOrdenesMarketListed.Count > 0 then 
                   If MessageBox.Show ("Si continúa con la carga, se borrarán los registros actuales, ¿desea continuar?","Carga del Portapapeles",MessageBoxButton.YesNo,MessageBoxImage.Question) =MessageBoxResult.Yes then 
                      lstOrdenesMarketListed.Clear () 
                      InertarRegistrosLI (grdLayoutOrdMarketListed)                             
                      grdLayoutOrdMarketListed.Items.Refresh ()
                   End If
    
                Else        
                   lstOrdenesMarketListed.Clear () 
                   InertarRegistrosLI (grdLayoutOrdMarketListed)                             
                   grdLayoutOrdMarketListed.Items.Refresh () 
                End If
    
            Catch ex As Exception

                Dim errorBit =  eventoBit.GuardarError(ex.Message)

                MessageBox.Show ("Error al intentar pegar la información: " & errorBit.IdError & " - " & errorBit.IdRegEvento  ,"Carga del Portapapeles",MessageBoxButton.OK,MessageBoxImage.Exclamation ) 
                lstOrdenesMarketListed.Clear () 
                grdLayoutOrdMarketListed.Items.Refresh () 
            End Try
    
    
            txtNumReg.Content = lstOrdenesMarketListed.Count 
    

            eventoBit.ActualizarFechaFinDelEvento ()

            Mouse.OverrideCursor = Nothing 
    
    
    End Sub

    Private Sub btnEnviarAdecalog_Click(ByVal sender As System.Object , ByVal e As System.Windows.RoutedEventArgs) Handles btnEnviarAdecalog.Click
             
             Dim sMsgError         As String = ""
             Dim NomArchivoTL      As String = ""
             Dim bAlmacenadoEnLog  As Boolean = false
    


             Dim eventoBit =  CBitacoraFRIDA.GenerarEvento (CBitacoraFRIDA.CveEventosBit.GENERAR_TRANS_LISTED_DECALOG,CServiciosMacrosSyBaseDB.IDUSUARIO,"btnEnviarAdecalog_Click")    


            '1. Validación de Información 
    
             Dim numEstrategiasDesconocidas As Integer = 0      
                  
             If negocio.ValidarInfoEntrada (lstOrdenesMarketListed, numEstrategiasDesconocidas, sMsgError) = False 

                    If Not sMsgError.Equals("") then 
                       Dim errorBit =  eventoBit.GuardarError (sMsgError) 
                       eventoBit.ActualizarFechaFinDelEvento ()
                       MessageBox.Show ("Ocurrió una excepción al validar los datos de entrada: " & errorBit.IdError & " - " & errorBit.IdRegEvento,"Validación de Información de Transacciones", MessageBoxButton.OK,MessageBoxImage.Exclamation)  
                       grdLayoutOrdMarketListed.Items.Refresh ()                       
                       Exit Sub 
                    else
                        eventoBit.ActualizarFechaFinDelEvento ()
                        MessageBox.Show ("Información incorrecta, verifique el campo de mensaje de validación en cada registro.","Validación de Información de Transacciones", MessageBoxButton.OK,MessageBoxImage.Exclamation)  
                        grdLayoutOrdMarketListed.Items.Refresh ()                        
                        Exit Sub 
                    End If
                    
             else
    
                   If numEstrategiasDesconocidas > 0 then       
                               
                      If MessageBox.Show ("Se introdujeron estrategias que no existen en Decalog. Desea continuar con el envío?","Validación de Información de Transacciones", MessageBoxButton.YesNo,MessageBoxImage.Question)  = MessageBoxResult.No  then 
                       grdLayoutOrdMarketListed.Items.Refresh ()
                       eventoBit.ActualizarFechaFinDelEvento ()
                       Exit Sub             
                      End If

                      eventoBit.GuadarDetalle("Validación_Estrategia","No de estrategias no desconocidas: " & numEstrategiasDesconocidas)

                   End If
    


                   Dim diferenciaTEAvsTEC As Decimal = negocio.ValidarTEAvsTEC(lstOrdenesMarketListed)
                   Dim mensaje            As String = ""

                   eventoBit.GuadarDetalle("Validación_TEAvsTEC","Diferencia: " & diferenciaTEAvsTEC)
                   If  diferenciaTEAvsTEC <> 0  then 
                       If diferenciaTEAvsTEC > 0 'La suma de TEAs > TECs                          
                          mensaje = "La suma de TEA's es mayor a la suma de TEC's"
                       else 'La suma de TEAs < TECs
                          mensaje = "La suma de TEC's es mayor a la suma de TEA's"
                       End If


                       eventoBit.GuadarDetalle("Validación_TEAvsTEC",mensaje)

                       If MessageBox.Show (mensaje & ". ¿Desea continuar?","Validación de Información de Transacciones", MessageBoxButton.YesNo,MessageBoxImage.Question)  = MessageBoxResult.No  then 
                          grdLayoutOrdMarketListed.Items.Refresh ()
                          eventoBit.ActualizarFechaFinDelEvento ()
                          Exit Sub             
                      End If
                   End If


                
             End If
             
             

             '2. Generación del Archivo TL    
             If negocio.GenerarArchivoTL (lstOrdenesMarketListed, NomArchivoTL,sMsgError) = False   then
                Dim errorBit = eventoBit.GuardarError ("Error en negocio.GenerarArchivoTL " & sMsgError)  
                MessageBox.Show ("Error al generar el archivo TL: " & errorBit.IdError & " - " & errorBit.IdRegEvento  , "Generación del Archivo",MessageBoxButton.OK, MessageBoxImage.Error)
                eventoBit.ActualizarFechaFinDelEvento ()
                Exit sub                     
             End If
                                                             
    


           '3. Envio  a DECALOG 
                        
           eventoBit.GuadarDetalle ("AlmacenarLogDeTransaccionesLISTED","Nombre Archivo: " & NomArchivoTL)
           bAlmacenadoEnLog =  negocio.AlmacenarLogDeTransaccionesLISTED (lstOrdenesMarketListed,NomArchivoTL, sMsgError )                            

           If not sMsgError.Equals ("") then 
              Dim errorBit = eventoBit.GuardarError ("Error en negocio.AlmacenarLogDeTransaccionesLISTED " & sMsgError)
           End If

           
           
                                                
           negocio.GenerarTransaccionesLISTEDDECALOG(NomArchivoTL)  




           If bAlmacenadoEnLog = True then 
              MessageBox.Show ("La información se ha enviado a Decalog","Envío a Decalog, generación de transacciones Listed", MessageBoxButton.OK,MessageBoxImage.Information)
           else
              MessageBox.Show ("La información se ha enviado a Decalog, pero ocurrió un errior al intentar almacenar la información en el log de transacciones. Favor de contacte a soporte.","Envío a Decalog, generación de transacciones Listed", MessageBoxButton.OK,MessageBoxImage.Information)
           End If
                                       
    
           '4. Limpiar información
           lstOrdenesMarketListed.Clear ()
           grdLayoutOrdMarketListed.Items.Refresh ()
           txtNumReg.Content = lstOrdenesMarketListed.Count 
           
    
          eventoBit.ActualizarFechaFinDelEvento ()


    End Sub    
    
    Private Sub btnConsultar_Click(ByVal sender As System.Object , ByVal e As System.Windows.RoutedEventArgs) Handles btnConsultar.Click
    
           Dim sFechaIni As String 
           Dim sFechaFin As String 
           Dim sMsgError As String = ""
    
    
        Mouse.OverrideCursor = Cursors.Wait  
    

                
            Try        
    
              sFechaIni =   String.Format(Me.fechaInicio.Text,"yyyy-MM-dd") & " " & String.Format ( Me.tiempoInicio.HoraCompleta ,"HH:mm:ss")
              sFechaFin  =  String.Format(Me.fechaFin.Text,"yyyy-MM-dd") & " " & String.Format ( Me.tiempoFin.HoraCompleta ,"HH:mm:ss")
    
              
               If Convert.ToDateTime (sFechaFin) < Convert.ToDateTime (sFechaIni)  then 
                  MessageBox.Show ("No se pudo obtener la información: la fecha fin debe ser mayor o igual a la fecha de inicio.", "Obtención de Folios Decalog ", MessageBoxButton.OK, MessageBoxImage.Exclamation)
                  Mouse.OverrideCursor = Nothing
                  Exit Sub 
               End If
                           

              lstLogTransacListed = negocio.ObtenerTransacLogXPeriodo  (Convert.ToDateTime(sFechaIni), Convert.ToDateTime ( sFechaFin),sMsgError)                                                                                            
              grdFoliosRecdecalog.ItemsSource = lstLogTransacListed 
              
    
              If Not sMsgError.Equals ("") then 
                 MessageBox.Show ("No se pudo obtener la información debido a: " & sMsgError, "Obtención de Folios Decalog ", MessageBoxButton.OK, MessageBoxImage.Exclamation)
                 Mouse.OverrideCursor = Nothing             
              
              else
                  If grdFoliosRecdecalog.Items.Count <= 0 then 
                     MessageBox.Show ("No existe información para el periodo seleccionado.", "Obtención de Folios Decalog ", MessageBoxButton.OK, MessageBoxImage.Exclamation)
                  End If                            
              End If
    

              grdFoliosRecdecalog.UpdateLayout ()
    
                
            Catch ex As Exception
                MessageBox.Show("No existe información para los criterios introducidos:" & ex.Message, "Obtención de Folios Decalog ", MessageBoxButton.OK, MessageBoxImage.Exclamation)            
            End Try
    
            Mouse.OverrideCursor = Nothing
    
    
    End Sub

    Private Sub btnLimpiar_Click(ByVal sender As System.Object , ByVal e As System.Windows.RoutedEventArgs) Handles btnLimpiar.Click
        InicializarFechaHora ()
        lstLogTransacListed.Clear ()
        grdFoliosRecdecalog.ItemsSource = Nothing 
        grdFoliosRecdecalog.UpdateLayout ()
    End Sub

    Private Sub btnActRespDec_Click(ByVal sender As System.Object , ByVal e As System.Windows.RoutedEventArgs) Handles btnActRespDec.Click
    
      Dim sMsgError As String = ""
      Dim respuesta As Boolean = False 

      Dim eventoBit =  CBitacoraFRIDA.GenerarEvento (CBitacoraFRIDA.CveEventosBit.PROC_RESP_DECALOG_TRANS_LISTED ,CServiciosMacrosSyBaseDB.IDUSUARIO,"btnActRespDec_Click")    


      respuesta = negocio.CargarArchivosRespuestaDecalog(lstLogTransacListed,sMsgError, eventoBit) 

      If respuesta = True and sMsgError.Equals ("") then 
          MessageBox.Show ("La respuesta de Decalog ha sido actualizada en FRIDA", "Actualización de respuesta Decalog", MessageBoxButton.OK,MessageBoxImage.Information) 
      Elseif respuesta  = True and Not sMsgError.Equals ("") then 
          MessageBox.Show ("La respuesta de Decalog ha sido actualizada en FRIDA, pero al parecer ocurrieron algunas partucularidades:" & sMsgError, "Actualización de respuesta Decalog", MessageBoxButton.OK,MessageBoxImage.Information)  
      ElseIf respuesta = False 
          MessageBox.Show ("La respuesta de Decalog no ha sido actualizada en FRIDA, debido a:" & sMsgError, "Actualización de respuesta Decalog", MessageBoxButton.OK,MessageBoxImage.Exclamation)  
      End If


      grdFoliosRecdecalog.Items.Refresh ()
      grdFoliosRecdecalog.UpdateLayout ()
       

      eventoBit.ActualizarFechaFinDelEvento ()

    End Sub
    
    

   #Region "Importación de datos por el portapapeles"

        Private Sub InertarRegistrosLI(ByRef gridDeDatos As DataGrid)
  

            Dim datos As CDatosEnFormatoX
            Dim i As Integer = 0

            
            datos = CUtileria.ObtenerDatosClipboard(vblf, vbTab)
                        

            '1) Validaciones: obtener información del portapapeles


              If datos Is Nothing Then                        
                gridDeDatos.CancelEdit(DataGridEditingUnit.Cell)                
                Throw New Exception ("No se pudo copiar los datos") 
                Exit Sub
              End If



            If datos.Datos.length = 0 Then                
                Exit Sub
            End If


          
            '2)  Generar Registros en el grid
                         
               AgregarRegistroInstrumento(datos.NumeroRenglones )
             
         

            Dim colTot As Integer = __NUM_COL_TOT__   'Solo se considera el número de columnas editables   
            Dim rowTot As Integer = gridDeDatos.Items.Count


            Dim colActual As Integer 
            Dim rowActual As Integer 
       
            colActual = 0        
            rowActual = 0         

            'Validar renglones

            If datos.NumeroRenglones > ((rowTot - (rowActual + 1)) + 1) Then                 
                Throw New Exception ("No coinciden las dimensiones de datos a pegar (R)")
                gridDeDatos.CancelEdit(DataGridEditingUnit.Cell)
                Exit Sub
            End If



            If datos.NumeroColumnas.Max > ((colTot - (colActual + 1)) + 1) Then
                 Throw New Exception ("No coinciden las dimensiones de datos a pegar (C)")
                 gridDeDatos.CancelEdit(DataGridEditingUnit.Cell)
                 Exit Sub
            End If

            '2) Realizar copiado  

            i = 0


            Dim coontador As Integer = 0

            Dim limRow As Integer = (rowActual + (datos.NumeroRenglones - 1))
            Dim limCol As Integer = (colActual + (datos.NumeroColumnas.Max - 1))


            gridDeDatos.UnselectAllCells()


            Try


                Dim j As Integer = 0
                For i = rowActual To limRow

                    Dim row As DataGridRow = gridDeDatos.ItemContainerGenerator.ContainerFromIndex(i)

                    For j = colActual To limCol
                        If datos.Datos(i - rowActual)(j - colActual) <> vbLf And (Not CType(datos.Datos(i - rowActual)(j - colActual), String).Trim().Equals("")) Then
                            Dim cellContent As Object  = gridDeDatos.Columns(j).GetCellContent(row)
                            lstOrdenesMarketListed(i)(j) = datos.Datos(i - rowActual)(j - colActual).ToString.Trim()
                            cellContent.Text = datos.Datos(i - rowActual)(j - colActual).ToString.Trim()
                        End If
                    Next            

                Next

                gridDeDatos.CancelEdit(DataGridEditingUnit.Cell)

            Catch ex As Exception
                gridDeDatos.CancelEdit(DataGridEditingUnit.Cell)
                Throw New Exception("No se pudo terminar de copiar los datos debido a que no coinciden con el formato especificado para cada celda", ex)
            End Try


    End Sub

        Private Sub AgregarRegistroInstrumento(ByVal numreg As Integer)
          
          For i = 1 to numreg 
              lstOrdenesMarketListed.Add (negocio.ObtenerRegistroDefaultDeOrdMarketListed ())
          Next                                  

          grdLayoutOrdMarketListed.Items.Refresh ()         
          grdLayoutOrdMarketListed.ScrollIntoView(grdLayoutOrdMarketListed.Items(grdLayoutOrdMarketListed.Items.Count - 1))
          grdLayoutOrdMarketListed.UpdateLayout()


       End Sub
        

   #End Region


#End Region

Private Sub grdLayoutOrdMarketListed_LoadingRow(ByVal sender As System.Object , ByVal e As System.Windows.Controls.DataGridRowEventArgs) Handles grdLayoutOrdMarketListed.LoadingRow

         Try
            Dim ordAux As CTOrdenMarketListed  = DirectCast(e.Row.DataContext, CTOrdenMarketListed)

            If ordAux.MsgValidacion.Length > 0 Then 

                If Not ordAux.MsgValidacion.ElementAt (0).Equals ("%"c) then 
                   e.Row.Background = New SolidColorBrush(Colors.Red )
                   e.Row.Foreground = New SolidColorBrush(Colors.White)                   
                else
                   e.Row.Background = New SolidColorBrush(Colors.Orange)
                   e.Row.Foreground = New SolidColorBrush(Colors.White)
                End If

                
            End If
        Catch ex As Exception
        End Try


End Sub


#End Region




Private Sub InicializarFechaHora () 

        Me.fechaInicio.Text = Date.Now.ToString ("dd/MM/yyyy") 
        Me.tiempoInicio.txtHora.Text  = "00"
        Me.tiempoInicio.txtMinuto.Text = "00" 
        Me.tiempoInicio.txtSegundo.Text = "00" 

        Me.fechaFin.Text = Now.ToString ("dd/MM/yyyy") 
        Me.tiempoFin.txtHora.Text  = Date.Now.Hour.ToString("0#")   
        Me.tiempoFin.txtMinuto.Text = Date.Now.Minute.ToString ("0#") 
        Me.tiempoFin.txtSegundo.Text = "00" 


 End Sub

Public Sub ReleaseObject(ByVal o As Object)
      Try
          While(System.Runtime.InteropServices.Marshal.ReleaseComObject(o) > 0)
          End While
      Catch
      Finally
          o = Nothing
      End Try
  End Sub










End Class
